#include "graph.h"
#include<bits/stdc++.h>

using namespace std;

const int NN=205;
int ans[NN];bool vis[NN],use[NN][NN];
int n=1,top,fa[NN],st[NN],d[NN],p[NN],son[NN];

bool g[NN][NN];void add(int u,int v){g[u][v]=g[v][u]=1;}
void dfs(int u){st[++top]=u;
	son[u]=NumberOfRoads();
	for(int i=1,v;i<=son[u];i++)if(i!=fa[u]){
		Move(i,2),p[u]=i;
		if(Color()==1)v=++n,fa[v]=LastRoad(),add(u,v),dfs(v),Move(fa[v],2);
		else if(!use[u][i]){
			int x=LastRoad();
			Move(x,3); 
			for(int i=top-1;i>=1;i--){
				Move(fa[st[i+1]],2);
				if(Color()==3){add(u,st[i]),use[st[i]][x]=1;
					for(int j=i;j<top;j++)Move(p[st[j]],2);
					break ;
				}
			} 
		}else Move(LastRoad(),2);
	}	
	top--;
}
int l,r,q[NN];
void bfs(int s){
	for(int i=1;i<=n;i++)vis[i]=d[i]=0;
	vis[s]=1,q[l=r=1]=s;
	while(l<=r){
		int u=q[l++];if(u>s)ans[d[u]]++;
		for(int v=1;v<=n;v++)if(!vis[v]&&g[u][v])d[v]=d[u]+1,vis[v]=1,q[++r]=v;
	}
}
void Inspect(int R) {
	dfs(1);
	for(int i=1;i<=n;i++)bfs(i);
	for(int i=1;i<=R;i++)Answer(i,ans[i]);
	return ;
}
